package com.qiaofang.applet.service.member.service;

import com.qiaofang.applet.common.base.BaseService;
import com.qiaofang.applet.service.member.domain.Member;
import com.qiaofang.applet.service.member.service.dto.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Map;
import java.util.Set;

/**
 * @author daiyuxiang
 */
public interface MemberService extends BaseService<Member, String> {

    String getMemberPhone(String memberId);

    /**
     * 发送手机验证码
     *
     * @param sendCaptchaDto
     * @return
     */
    boolean sendCaptcha(SendCaptchaDto sendCaptchaDto);

    /**
     * 获取图片验证码
     *
     * @return
     */
    Map<String, Object> getPicCaptcha();

    /**
     * 登陆
     *
     * @param loginDto
     * @return
     */
    MemberLoginDto login(LoginDto loginDto);

    /**
     * 查询会员管理列表
     *
     * @param requestDto
     * @param pageable
     * @return
     */
    Page<MemberDto> findByParams(MemberQueryDto requestDto, Pageable pageable);

    /**
     * 通过id集合获取所有会员
     *
     * @param memberIds
     * @return
     */
    Map<String, Member> getMemberMap(Set<String> memberIds);

    /**
     * wxCode换取用户信息
     *
     * @param code
     * @return
     */
    MemberLoginDto memberSession(String code);

    /**
     * 获取微信手机号
     *
     * @param reqDto
     * @return
     */
    String decryptPhone(DecryptPhoneReqDto reqDto);

    /**
     * 微信注册
     *
     * @param reqDto
     * @return
     */
    MemberLoginDto wxRegist(MemberRegisterReqDto reqDto);

    Member findByMobilePhoneAndCorporationCode(String mobilePhone, String corporationCode);

    /**
     * 保存用户头像，名称  用于展示访客列表
     * @param headPortraitAndNameDto
     */
    void updateHeadPortraitAndName(HeadPortraitAndNameDto headPortraitAndNameDto);

    /**
     * PC端退出登陆
     *
     * @return
     */
    void pcwebLogout(String token);
}
